/**
 * @description 给定一个字符串 s ，请你找出其中不含有重复字符的最长子串的长度。
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function (s) {
  // 我自己的方法
  // if(s.length<=0) return 0
  // let len = 1
  // for (var i = 0; i < s.length; i++) {
  //   let str = ''
  //   str += s[i]
  //   let right = i + 1
  //   while (right < s.length) {
  //     if (str.includes(s[right])) {
  //       str = ''
  //       break
  //     }
  //     str += s[right]
  //     if(str.length>len) len = str.length
  //     right++
  //   }
  // }
  // return len
  // 利用滑动窗口
  let set = new Set();
  let len = 0;
  let right = 0;
  for (var i = 0; i < s.length; i++) {
    if (i != 0) {
      set.delete(s[i - 1]);
    }
    while (right < s.length && !set.has(s[right])) {
      set.add(s[right]);
      right++;
    }
    len = Math.max(len, set.size);
  }
  return len;
};
console.log(lengthOfLongestSubstring(""));
